/**
 * 该模块用于token的获取和设置
 */

/**
 * expire:token的过期时间，可选项，不填则视为不过期
 * 第二个参数为token
 */
export interface IDate{
    data:any
    expire?:number,
}

export default{
      /**
     * 为用户设置token
     * @param key 
     * @returns 未过期返回IDate，过期或未设置返回Null
     */
    set(key: string, data: any, expire?: number):void{
        let cache:IDate = {data}
        if(expire){
            cache.expire = new Date().getTime() + expire * 1000
        }
        localStorage.setItem(key,JSON.stringify(cache));
    },
    /**
     * 如果所设置的过期时间已到，则将token从本地缓存中删除
     * @param key 
     * @returns 未过期返回IDate，过期或未设置返回Null
     */
    get(key: string):any{
        const cacheStore = localStorage.getItem(key)
        if(cacheStore){
            const cache = JSON.parse(cacheStore);
            const expire = cache?.expire
            if(expire < new Date().getTime()){
                localStorage.removeItem(key)
                return null;
            }
            return cache.data;
        }
        return null
    },
    remove(key: string){
        localStorage.removeItem(key)
    }
}